#pragma once
#include <windows.h>
#include <string>
using namespace std;
/**
 * 线程同步自动锁,  AutoLock构造会加锁, 析构会解锁.
 */
class ProcessLock {
public:
	//必须提供一个名字, 以区别其他地方的同步代码, 所有用到锁的地方都不要使用相同的名字.
	//如果在类成员函数中使用, 建议使用类名和函数名联合, 如: Login::DoLogin
	//如果在全局函数中使用, 建议使用文件名和函数名联合, 如: util.GetSkinPath
	ProcessLock(string key);
	virtual ~ProcessLock(void);
private:
	HANDLE event;
};

class ThreadLock: public ProcessLock {
public:
	ThreadLock(string key);
};
